package cc.nfscan.server.controller.fe;
import cc.nfscan.server.controller.be.AbstractController;
import cc.nfscan.server.controller.response.ResultResponse;
import cc.nfscan.server.dao.ElectronicTaxReceiptDAO;
import cc.nfscan.server.domain.ElectronicTaxReceipt;
import com.google.gson.Gson;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import static cc.nfscan.server.utils.StringUtils.*;
/**
* Controller in charge of handling ElectronicTaxReceipt related requests on frontend interface
*
* @author Paulo Miguel Almeida <a href="http://github.com/PauloMigAlmeida">@PauloMigAlmeida</a>
*
*/
@Controller
public class ElectronicTaxReceiptMobileController extends AbstractController{
@Autowired
private ElectronicTaxReceiptDAO electronicTaxReceiptDAO;
@RequestMapping(value = "/fe/electronictaxreceipts/donate", method = RequestMethod.POST)
public ResponseEntity<String> donate(
@RequestParam(value = "accessKey") String accessKey,
@RequestParam(value = "total") double total
) {
HttpHeaders responseHeaders = super.createBasicHttpHeaderResponse(APPLICATION_JSON);
Gson gson = new Gson();
ResultResponse resultResponse;
try {
Assert.hasLength(accessKey);
accessKey = removeNonNumeric(accessKey);
Assert.isTrue(validateElectronicTaxReceiptAccessKey(accessKey));
Assert.isTrue(total > 0.0);
//Save to database
ElectronicTaxReceipt receipt = new ElectronicTaxReceipt(accessKey, total);
electronicTaxReceiptDAO.save(receipt);
resultResponse = new ResultResponse(true);
}catch (Exception ex){
ex.printStackTrace();
resultResponse = new ResultResponse(false);
}
return new ResponseEntity<>(gson.toJson(resultResponse), responseHeaders, HttpStatus.OK);
}
}